function reverseVowels(s) {
  // 定义元音字符集，包括大小写
  const vowels = new Set(["a", "e", "i", "o", "u", "A", "E", "I", "O", "U"]);

  // 将字符串转换为数组，以便于修改
  const sArray = s.split("");

  // 使用双指针从字符串两端向中间遍历
  let left = 0;
  let right = sArray.length - 1;

  while (left < right) {
    // 如果左指针指向的字符不是元音，向右移动左指针
    if (!vowels.has(sArray[left])) {
      left++;
    }
    // 如果右指针指向的字符不是元音，向左移动右指针
    else if (!vowels.has(sArray[right])) {
      right--;
    }
    // 如果左右指针都指向元音字符，则交换这两个字符
    else {
      [sArray[left], sArray[right]] = [sArray[right], sArray[left]];
      left++;
      right--;
    }
  }

  // 将数组重新转换为字符串并返回
  return sArray.join("");
}

// 示例用法
const originalText = "Hello, World!";
const reversedVowels = reverseVowels(originalText);
console.log(reversedVowels); // 输出: "Holle, Werld!"
